﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Data;
using CurriculasEntities;

namespace CurriculasDAO
{
    
     public class CursoSilaboDAO : IBaseDA<CursoSilaboBE , int>
    {

         public CursoSilaboBE Crear(CursoSilaboBE entidad)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                db.CursosSilabos.Add(entidad);
                db.SaveChanges();
            }
            return entidad;
        }

         public CursoSilaboBE Obtener(int id)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                
                return db.CursosSilabos.Find(id);
            }
        }
        
         public CursoSilaboBE ObtenerbySilabo(CursoSilaboBE objcs)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {

                return db.CursosSilabos.Find(objcs.codSilabo);
            }
        }
         
         public CursoSilaboBE Modificar(CursoSilaboBE entidad)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                db.CursosSilabos.Attach(entidad);
                db.Entry(entidad).State = EntityState.Modified;
                db.SaveChanges();
            }
            return entidad;
        }

         public void Eliminar(CursoSilaboBE entidad)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                db.CursosSilabos.Remove(entidad);
                db.SaveChanges();
            }
        }

         public ICollection<CursoSilaboBE> ListarTodos()
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                return db.CursosSilabos.ToList();
            }
        }

         public ICollection<CursoSilaboBE> ListarTodos(Expression<Func<CursoSilaboBE, bool>> where)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                return db.CursosSilabos.Where(where).ToList();
            }
        }

         public ICollection<CursoSilaboBE> ListarBySilabo(int codSilabo)
         {
             string _sentenciaSql = "USP_GC_ListarCursoSilaboBySilabo  " + codSilabo;

             using (EFContext db = new EFContext(Utility.ObtenerCadena()))
             {
                 return db.Database.SqlQuery<CursoSilaboBE>(_sentenciaSql).ToList(); ;
             }
         }

    }
}
